<?php

function loadData()
{
    global $data;
    
    if (isset($_SESSION["EchoesOfWar"]["data"]))
    {
        $data = $_SESSION["EchoesOfWar"]["data"];
    }
}

function saveData()
{
    global $data;
    
    $_SESSION["EchoesOfWar"]["data"] = $data;
}

/**
 * Přesunuje uživatele na zadanou stránku. Dá se použít pouze v xfunkcích. Zálohuje globální pole $data.
 * @param string $kam <p>
 * Kam uživatele přesunout.
 * </p>
 * @return null
 */
function redirect($kam)
{
    global $base;
    saveData();    
    header("Status-Code: 301 Moved Permanently");
    header("Location: ".$base.$kam);
    exit;
}

/**
 * Zkontroluje správnost e-mailu.
 * @param string $email <p>
 * Kontrolovaný e-mail. 
 * </p>
 * @return bool
 */
function check_email($email)
{
    if (!preg_match('~^[-a-z0-9!#$%&\'*+/=?^_`{|}\~]+(\.[-a-z0-9!#$%&\'*+/=?^_`{|}\~]+)*@([a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?\.)+[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])$~i', $email)) 
    {
        return false;  
    }
    else
    {
        return true;
    }
}

/**
    * Funkce pro generování náhodného řetězce znaků.
    * @param int $len [optional] <p>
    * Délka generovaného řetězce.
    * </p>    
    * @return string
*/
function random_string($len="10")
{
    $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $str = '';

    for ($i=0; $i < $len; $i++) {
        $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
    }

    return $str;
}

function setMessages()
{
    global $data;
    
    if (isset($data["msg-error"]) && $data["msg-error"] != "")
    {
        echo html_error($data["msg-error"]);
        unset($data["msg-error"]);
    }
    
    if (isset($data["msg-done"]) && $data["msg-done"] != "")
    {
        echo html_done($data["msg-done"]);
        unset($data["msg-done"]);
    }
    
    if (isset($data["msg-info"]) && $data["msg-info"] != "")
    {
        echo html_info($data["msg-info"]);
        unset($data["msg-info"]);
    }
}

function writeToAccountLog($account, $action, $description, $state = 0)
{
    $insert = array("account"     => $account,
                    "date"        => Time(),
                    "state"       => $state,
                    "action"      => $action,
                    "description" => $description);
    dibi::query("INSERT INTO log_account", $insert);
}

/**
 * Zašle herní zprávu.
 * @param int $from <p>
 * ID odesilatele.
 * </p>
 * @param int $to <p>
 * ID příjemce.
 * </p>
 * @param string $title <p>
 * Titulek zprávy.
 * </p>
 * @param string $message <p>
 * Tělo zprávy.
 * </p>
 * @param bool $html = false [optional]<p>
 * ID příjemce.
 * </p>
 * @return null
 */
function sendMessage($from, $to, $title, $message, $html = false)
{
    $insert = array("mess_from" => $from,
                    "mess_to"   => $to,
                    "title"     => $title,
                    "message"   => $message,
                    "mess_read" => 0,
                    "date"      => Time(),
                    "html"      => ($html ? 1 : 0));
    dibi::query("INSERT INTO account_messages", $insert);
}

/**
 * Vrátí číselník z INUMU
 * @param string $code <p>
 * Kód položek.
 * </p>
 * @return array
 */
function getInum($code)
{    
    $s = dibi::query("SELECT code, text FROM inum WHERE inum = %s", $code);
    $r = $s->fetchAll();
    
    $arr = array();
    foreach ($r AS $v)
    {
        $arr[$v->code] = dl_lang($v->text);
    }
    
    return $arr;
}

function character_ini()
{
    global $base;
    
    include "class/AbstractCharacter.php";
    include "class/Hero.php";
}